<?php

class Tests_Frontend_Start_Login extends Kernel_Action_Form_Simple
{
    
    /**
     * Флаг, указывающий, что после сохранения данных формы не нужно показывать
     * сответствующее сообщение.
     *
     * @var boolean
     */
    protected $_no_message = true;
    
    /**
     * Путь к файлу шаблона.
     *
     * @var string
     */
    protected $_template = 'tests/frontend/login.tpl';
    
    /**
     * Основная таблица, в которой хранится редактируемый элемент.
     *
     * @var string
     */
    protected $_table = 'user_user';
    
    /**
     * Элементы основной таблицы, которые нужно исключить из формы.
     *
     * @var array
     */
    protected $_exclude = array('date');
    
    /**
     * Инициализирует элементы формы.
     *
     */
    protected function _initElements() 
    {
        parent::_initElements();
        
        $this->_setElementParam('name', array('caption' => __('FIO')));
        $this->_setElementParam('group', array('caption' => __('GROUP')));
        $this->_setAsRequired('name', 'group');
    }
    
    /**
     * @desc Добавляем сессию.
     *
     */
    protected function _process() 
    {
        $session_key = md5(uniqid(rand()));
        
        if (is_null(Application::getRequest()->get('session'))) {
            $this->_location('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '&session=' . $session_key);
        }
        
        parent::_process();
    }
    
    /**
    * @desc Логируем ползователя и сохраняем его в сессию.
    * 
    */
    protected function _save() 
    {
        $SESSION = array();
        // записываем id теста 
        $SESSION['test_id'] = (int)Application::getRequest()->get('id');
        // записываем id пользователя
        $SESSION['user_id'] = (int)database::insert($this->_table, $this->_getValues());
        // указываем храниилище вопросов:ответов
        $SESSION['data'] = array();
        
        Tests_Utils::setSession($SESSION);
    }
    
}